from . import db
from datetime import datetime


class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)  # 用户编号
    e_mail = db.Column(db.String(32), unique=True, nullable=False)  # 电子邮箱
    password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
    create_time = db.Column(db.DateTime, default=datetime.now)  # 注册时间
    last_login = db.Column(db.DateTime, default=datetime.now)  # 最后一次登录时间
    is_admin = db.Column(db.Boolean, default=False)
    signature = db.Column(db.String(512))  # 用户签名
    gender = db.Column(  # 性别
        db.Enum(
            "MAN",  # 男
            "WOMAN"  # 女
        ),
        default="MAN"
    )
class  Blogs(db.Model):
    """新闻"""
    __tablename__ = "blogs"

    id = db.Column(db.Integer, primary_key=True)  # 新闻编号
    title = db.Column(db.String(256), nullable=False)  # 新闻标题
    source = db.Column(db.String(64), nullable=False)  # 新闻来源
    digest = db.Column(db.String(512), nullable=False)  # 新闻摘要
    content = db.Column(db.Text, nullable=False)  # 新闻内容
    clicks = db.Column(db.Integer, default=0)  # 浏览量
    index_image_url = db.Column(db.String(256))  # 新闻列表图片路径
    create_time = db.Column(db.DateTime, default=datetime.now)  # 记录的创建时间
    update_time = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now)  # 记录的更新时间
    user_id = db.Column(db.Integer, db.ForeignKey("user.id"))  # 当前新闻的作者id

    def to_dict(self):
        """
        定义一个方法，用来将将对象中的部分属性，转换为字典
        :return: 一个字典
        """
        ret = {
            "id": self.id,
            "create_time": self.create_time,
            "digest": self.digest,
            "index_image_url": self.index_image_url,
            "source": self.source,
            "title": self.title
        }
        return ret